package cn.edu.zafu.bigdata.fui;

interface Movable {
    void move();
    void stop();
}

interface Resizable {
    void resize(double factor);
}

class Car_Interfaced implements Movable{
    public void move() {
        System.out.println("The car is moving.");
    }

    public void stop() {
        System.out.println("The car has stopped.");
    }
}

class ResizableCircle implements Movable, Resizable {
    private double radius;

    ResizableCircle(double radius){
        this.radius = radius;
    }
    public void move() {
        System.out.println("The circle is moving.");
    }

    public void stop() {
        System.out.println("The circle has stopped.");
    }

    public void resize(double factor) {
        radius *= factor;
        System.out.println("Resized radius: " + radius);
    }
}
public class TestInterface {
    public static void main(String[] args) {
        Car_Interfaced car = new Car_Interfaced();
        ResizableCircle resizableCircle = new ResizableCircle(3);

        car.move();
        car.stop();

        resizableCircle.move();
        resizableCircle.stop();
        resizableCircle.resize(1.5);
    }
}

/*背景介绍：

接口（interface）在Java中定义了类可以实现的行为规范，接口中的方法默认是抽象的，
类可以通过实现接口来遵循这些行为。与抽象类不同，接口不包含具体的实现，而且一个类可以实现多个接口。
本题通过编程实践，帮助学生理解接口的设计、使用以及多实现的特性。

题目要求：
1.定义一个接口 Movable，该接口包含以下方法：
抽象方法 void move()，表示物体移动。
抽象方法 void stop()，表示物体停止移动。

2.定义一个接口 Resizable，该接口包含以下方法：
抽象方法 void resize(double factor)，表示物体根据因子进行缩放。

3.编写类 Car，实现 Movable 接口，要求：
在 move() 方法中打印 "The car is moving."
在 stop() 方法中打印 "The car has stopped."

4.编写类 ResizableCircle，实现 Movable 和 Resizable 两个接口，要求：
ResizableCircle 类具有属性 radius（半径）。
在 move() 方法中打印 "The circle is moving."
在 stop() 方法中打印 "The circle has stopped."
在 resize() 方法中根据缩放因子修改半径，并打印缩放后的半径。

5.编写测试类 TestInterface，在 main 方法中：
创建 Car 和 ResizableCircle 的实例。
验证每个类对接口方法的实现，调用 move()、stop() 和 resize()（仅对 ResizableCircle 调用）。*/